fix: D3D12/Vulkan software rendering CI (incl. barrier rewrite and validation fixes)#3122
fix: D3D12/Vulkan software rendering CI (incl. barrier rewrite and validation fixes)#3122
Conversation
Add D3D12 to the GPU test matrix in test-windows.yml. Skip tests with known D3D12 rendering issues: - Staging texture creation (D3D12 limitation) - NextGenTest1 (NullReferenceException) - TestGeometricPrimitives, TestCustomEffect, TestRenderToTexture, TesselationTest, SpriteRenderer3DTests (rendering differences)
…GB<=>BGR swap if available
1db5b85 to
b3bb8a2
Compare
|
Can't comment on Graphics API stuff, but looks good otherwise.
I've seen the change related to that, shouldn't we document this ? Do you know where it comes from, what users might want to watch out for when falling in the same issue ? You've also introduced a submodule to the repo, shouldn't we mention this in the readme's instructions ? |
ece1b7c to
a99a323
Compare
It's a minor difference when rendering with SwiftShader:
Anyway, you're right, I should probably write it down somewhere for people writing tests.
Good point, will do! As usual, thanks for the feedbacks! |
|
Quick addition on why I used a submodule rather than on main repo: Using github workflow, if you want to use a workflow_dispatch to trigger it by clicking a button (which I think is the only option, we can't make it build again every commit), it will only appear on Actions list to click if it's merged on the main branch (!) Let's say, you are working on a feature branch and need a new dll, you can't do it by adding a workflow on Stride repo in that branch as you can't run this workflow (unless you do it in master). It's a bit unfortunate but I couldn't figure out a workaround, and that's why I came up with a separate deps repository where we can more easily build/push the deps on We can still give it a try on Stride directly to avoid submodules. However, we will likely need submodule for the SPIR-V branch anyway (unless I also copy/subtree it on our repo), as it needs CppNet8, SpirvHeaders and SpirvRegistry. What do you think, should we avoid them? or embrace them? |
|
Actually, let me try to put everything back on main repo |
…on some platforms (i.e. SwiftShader)
…ixes Vulkan drawing order 1st frame for BillboardModeTests)
…ne semaphore support
…promote D3D12 SpriteRenderer3DTests gold image
…ed when running with elevated permissions)
… of parent ArraySize
…ified D3D11 with D3D12/Vulkan log approach
…r to prevent leak on heap rollover
…me, others are broken)
…e duplicate PR triggers
I remember that. I still have PTSD 😅.
That seems more manageable if you can make it work. Side note: after merging #3115, I think we still have some workflows that have a trigger on push (while filtering some paths). Now that the main CI is triggered all the time, we should remove it from sub-workflows. Except maybe |
ace59ec to
8b4a5d4
Compare
… fallback to avoid Vulkan layout mismatch
…n validation layer false positives per-test
Track which command list last recorded a barrier for each resource (LastBarrierCommandListId). When a resource is first used on a different command list, re-issue the barrier even if the layout matches, so the new command buffer has the transition recorded for Vulkan validation. Fixes shadow map atlas validation errors in multi-threaded rendering where worker command buffers sample textures transitioned by the main command buffer within the same vkQueueSubmit batch.
The checked-in build/sign/sign.exe is a Git LFS file that wasn't fetched by the sparse checkout, causing "not a valid application" errors. Replace with dotnet tool install at CI time.
de3bbbf to
e10ca0d
Compare
…o have it during test build (which needs it for CompilerApp)
…re rendering mode
Tests now use WARP/SwiftShader by default. Set STRIDE_TESTS_GPU=1 to run on real GPU hardware. This makes Test Explorer and dotnet test match gold images out of the box without needing a runsettings file. - Module.cs sets STRIDE_GRAPHICS_SOFTWARE_RENDERING=1 unless STRIDE_TESTS_GPU=1 is set - Flip launch profiles: Software is default, GPU sets STRIDE_TESTS_GPU - Rename runsettings to GameTests-GPU.runsettings (opt-in to GPU) - Add tests/GPU-TESTING.md with testing guidelines
…null sampler fallback
6204fd2 to
80cc36b
Compare
f881d2c to
80cc36b
Compare
PR Details
Adds GPU software rendering test infrastructure (D3D12 WARP, Vulkan SwiftShader) to CI, along with a comprehensive rewrite of the D3D12 resource barrier system and numerous graphics API validation fixes across D3D12 and Vulkan, so that all tests pass.
Barrier system rewrite
Separated in specific sub-branch for easier visibility.
BarrierLayout,BarrierAccess,BarrierSync) shared between D3D12 and VulkanD3D12 fixes
ShaderResourcestate instead ofCommon(fixes implicit promotion mismatch)DeferredReleaseQueue(fixes COM Release crash)CommandListteardown andDescriptorAllocatorheap rolloverVulkan fixes
DepthStencilflag)CI & test infrastructure
FirstChanceException, .NET unhandled viaDOTNET_DbgEnableMiniDump, native via WER LocalDumps)AnimatedModelTestscamera nudged for deterministic SwiftShader renderingRelated Issue
Types of changes
Checklist